encyklopedia.space

AWS IoT Device SDK

AWS IoT Device SDK (ang. AWS IoT Device Software Development Kit) to zbiór bibliotek i narzędzi umożliwiających programistom tworzenie aplikacji działających na urządzeniach brzegowych (ang. edge devices) i łączących je z usługą Amazon Web Services (IoT) AWS IoT Core. SDK zapewnia uproszczony dostęp do funkcji komunikacyjnych, zarządzania tożsamością, bezpieczeństwa oraz wymiany danych w chmurze.

Historia

Projekt SDK został ogłoszony w 2015 roku, wraz z premierą AWS IoT Core. Pierwsza wersja udostępniona została jako otwarte oprogramowanie na licencji Apache License 2.0. Z biegiem lat wprowadzono wsparcie dla kolejnych języków programowania i rozszerzono zestaw funkcjonalności, aby sprostać rosnącym wymaganiom ekosystemu IoT.

Architektura i główne komponenty

SDK składa się z kilku warstw:

  • Warstwa transportowa – obsługuje protokoły MQTT, HTTPS oraz WebSocket. Dzięki temu urządzenia mogą wymieniać wiadomości w trybie publikacji/subskrypcji lub w tradycyjnych zapytaniach HTTP.
  • Warstwa bezpieczeństwa – implementuje uwierzytelnianie i szyfrowanie przy użyciu TLS 1.2/1.3 oraz certyfikatów X.509. SDK automatycznie obsługuje rotację kluczy i wymianę certyfikatów.
  • Warstwa zarządzania połączeniami – zapewnia automatyczne ponowne łączenie, keep‑alive oraz buforowanie wiadomości w trybie offline.
  • Warstwa API aplikacji – udostępnia wysokopoziomowe interfejsy do publikowania danych (publish), subskrybowania tematów (subscribe), aktualizacji cieni urządzenia (Device Shadow) oraz wywołań zdalnych (AWS Lambda).

Obsługiwane języki programowania

W ramach projektu udostępniono SDK w następujących językach:

  • C – najniższy poziom, przeznaczony do urządzeń o ograniczonych zasobach.
  • C++ – rozszerza wersję C o obiektowe API.
  • Java – popularny w środowiskach przemysłowych i Androidzie.
  • Python – idealny do prototypowania i aplikacji na Raspberry Pi.
  • JavaScript (Node.js) – wykorzystywany w rozwiązaniach brzegowych opartych na Node.js.
  • Arduino – dedykowany zestaw bibliotek dla platformy Arduino.

Podstawowe funkcje

SDK umożliwia realizację następujących zadań:

  • Tworzenie i utrzymywanie bezpiecznych połączeń MQTT oraz HTTPS z AWS IoT Core.
  • Publikowanie i subskrybowanie wiadomości w tematach topic.
  • Wykorzystywanie Device Shadow do przechowywania stanu urządzenia w chmurze.
  • Wywoływanie funkcji AWS Lambda oraz obsługa odpowiedzi.
  • Obsługa OTA (Over‑The‑Air) – zdalnej aktualizacji oprogramowania.
  • Integracja z usługą Rules Engine w celu przetwarzania danych w czasie rzeczywistym.

Bezpieczeństwo

Bezpieczeństwo jest jednym z filarów SDK. Najważniejsze mechanizmy to:

  • Uwierzytelnianie przy użyciu certyfikatów X.509 albo IAM (Amazon Identity and Access Management) przy pomocy tokenów Cognito.
  • Szyfrowanie kanału komunikacyjnego protokołem TLS.
  • Weryfikacja integralności wiadomości przy pomocy podpisów cyfrowych.
  • Wbudowane wsparcie dla polityk dostępu definiowanych w AWS IoT Policies.

Licencjonowanie i dostępność

SDK jest dostępny na licencji Apache License 2.0, co pozwala na darmowe użycie, modyfikację oraz dystrybucję w projektach komercyjnych i otwarto‑źródłowych. Repozytoria kodu źródłowego znajdują się w GitHubie w ramach organizacji aws‑developers.

Przykład użycia (Python)

import awsiot
from awsiot import mqtt_connection_builder

# Konfiguracja połączenia
mqtt_connection = mqtt_connection_builder.mtls_from_path(
    endpoint="your-endpoint.iot.region.amazonaws.com",
    cert_filepath="certs/device.pem.crt",
    pri_key_filepath="certs/private.pem.key",
    client_id="myDevice001",
    clean_session=False,
    keep_alive_secs=60)

# Nawiązanie połączenia
mqtt_connection.connect().result()
print("Połączono z AWS IoT Core")

# Subskrypcja tematu
def on_message(topic, payload, **kwargs):
    print(f"Otrzymano wiadomość na {topic}: {payload}")

mqtt_connection.subscribe(
    topic="my/topic",
    qos=awsiot.mqtt.QoS.AT_LEAST_ONCE,
    callback=on_message)

# Publikacja wiadomości
mqtt_connection.publish(
    topic="my/topic",
    payload="Hello, AWS IoT!",
    qos=awsiot.mqtt.QoS.AT_LEAST_ONCE)

# Zakończenie połączenia po 10 sekundach
import time
time.sleep(10)
mqtt_connection.disconnect().result()

Powiązane technologie

W ekosystemie AWS SDK współpracuje z wieloma usługami:

  • AWS IoT Greengrass – rozszerzenie możliwości przetwarzania danych na urządzeniach brzegowych.
  • Amazon Kinesis – strumieniowe przetwarzanie danych z urządzeń.
  • Amazon S3 – trwałe przechowywanie plików generowanych przez urządzenia.
  • Amazon DynamoDB – baza danych NoSQL do przechowywania stanu urządzeń.

Zobacz także

AWS IoT Core, Device Shadow, Rules Engine, IAM, TLS, MQTT, OTA.